package com.yfp.group.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.binarywang.wxpay.bean.notify.WxPayPartnerNotifyV3Result;
import com.github.binarywang.wxpay.bean.notify.WxPayPartnerRefundNotifyV3Result;
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result;
import com.yfp.group.domain.Enterprise;
import com.yfp.group.domain.dto.EnterpriseAccountDTO;
import com.yfp.group.domain.dto.EnterpriseUserDTO;
import com.yfp.group.domain.dto.GroupRegisterDTO;
import com.yfp.group.domain.vo.EnterpriseAccountVO;
import com.yfp.group.domain.vo.EnterpriseUserVO;

import java.util.List;

/**
 * @author admin
 * @description 针对表【enterprise_user(企业用户)】的数据库操作Service
 * @createDate 2024-08-10 09:44:34
 */
public interface EnterpriseService extends IService<Enterprise> {

    /**
     * 获取企业商户列表
     *
     * @return
     */
    List<EnterpriseUserVO> enterpriseUserList(EnterpriseUserDTO enterpriseUserDTO);

    /**
     * 根据id获取数据
     *
     * @param id
     * @return
     */
    Enterprise selectById(Long id);

    /**
     * 修改企业用户
     *
     * @param enterprise
     */
    void updateEnterpriseUser(Enterprise enterprise);

    /**
     * 注册账号
     *
     * @param groupRegisterBody
     * @return
     */
    WxPayUnifiedOrderV3Result.JsapiResult register(GroupRegisterDTO groupRegisterBody);

    /**
     * 根据用户ID查询
     *
     * @param userId
     * @return
     */
    Enterprise findByUserId(Long userId);

    /**
     * 解析订单回调
     *
     * @param result
     */
    void parseOrderNotifyResult(WxPayPartnerNotifyV3Result.DecryptNotifyResult result);

    /**
     * 解析退款回调
     *
     * @param result
     */
    void parseRefundNotifyResult(WxPayPartnerRefundNotifyV3Result.DecryptNotifyResult result);

    /**
     * h5-我的账号-用户信息数据
     *
     * @return
     */
    EnterpriseAccountVO getByCurrentUserId();

    /**
     * h5-检测改手机号是否注册过
     *
     * @param contactsMobile
     * @return
     */
    Boolean checkActivateUser(String contactsMobile);

    /**
     * h5-更新用户头像
     *
     * @param enterpriseAccountDTO
     */
    void updateAvatar(EnterpriseAccountDTO enterpriseAccountDTO);
}